trò chơi Cannon Siege miễn phí
12.317 lượt xem;
1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4 using UnityEngine.UI;
5
6 public class EnemyController : MonoBehaviour {
7
8 public int maxHitPoints;
9 public float damageCounter;
10 public GameObject deathEffect;
11 public AudioClip hurt;
12
13 private Animator animator;
14 private int hitPoints;
15 private Vector3 bounce;
16 private int maxScore;
17
18 void Awake(){
19 animator = GetComponent<Animator> ();
20 }
21
22 // Use this for initialization
23 void Start () {
24 InitializeVariables ();
25 }
26
27 // Update is called once per frame
28 void Update () {
29
30 }
31
32 void InitializeVariables(){
33 hitPoints = maxHitPoints;
34 maxScore = 1000;
35 }
36
37 void UpdateAnimationState(){
38 if(hitPoints <= 5){
39 animator.SetTrigger ("isDamage");
40 }
41 }
42
43 void OnCollisionEnter2D(Collision2D collision){
44 if(collision.relativeVelocity.magnitude > damageCounter){
45 hitPoints -= Mathf.RoundToInt(collision.relativeVelocity.magnitude);
46 UpdateScoreStatus (Mathf.RoundToInt (collision.relativeVelocity.magnitude));
47 if(GameController.instance != null && MusicController.instance != null){
48 if(GameController.instance.isMusicOn){
49 if (gameObject != null) {
50 AudioSource.PlayClipAtPoint (hurt, transform.position);
51 }
52 }
53 }
54 }
55
56
57 UpdateAnimationState ();
58
59 if(hitPoints <= 0){
60 Death ();
61
62 if(collision.gameObject.CompareTag("Player Bullet")){
63 bounce = collision.transform.GetComponent<Rigidbody2D> ().velocity;
64 bounce.y = 0f;
65 collision.transform.GetComponent<Rigidbody2D> ().velocity = bounce;
66
67 }
68 }
69 }
70
71 void Death(){
72 Destroy (gameObject);
73 GameObject newDeathEffect = Instantiate (deathEffect, transform.position, Quaternion.identity) as GameObject;
74 Destroy (newDeathEffect, 3f);
75 if(GameController.instance != null){
76 GameController.instance.score += maxScore;
77 }
78 DisplayScore ();
79
80 }
81
82 void UpdateScoreStatus(int hitScore){
83 if(GameController.instance != null){
84 GameController.instance.score += hitScore;
85 }
86 }
87
88 void DisplayScore(){
89 GameObject scoreText = Instantiate (Resources.Load ("Score Text Canvas"), new Vector3(transform.position.x, transform.position.y + 1f), Quaternion.identity) as GameObject;
90 scoreText.transform.GetChild (0).transform.GetComponent<Text> ().text = maxScore.ToString ();
91 Destroy (scoreText, 2f);
92 }
93 }
2 using System.Collections.Generic;
3 using UnityEngine;
4 using UnityEngine.UI;
5
6 public class EnemyController : MonoBehaviour {
7
8 public int maxHitPoints;
9 public float damageCounter;
10 public GameObject deathEffect;
11 public AudioClip hurt;
12
13 private Animator animator;
14 private int hitPoints;
15 private Vector3 bounce;
16 private int maxScore;
17
18 void Awake(){
19 animator = GetComponent<Animator> ();
20 }
21
22 // Use this for initialization
23 void Start () {
24 InitializeVariables ();
25 }
26
27 // Update is called once per frame
28 void Update () {
29
30 }
31
32 void InitializeVariables(){
33 hitPoints = maxHitPoints;
34 maxScore = 1000;
35 }
36
37 void UpdateAnimationState(){
38 if(hitPoints <= 5){
39 animator.SetTrigger ("isDamage");
40 }
41 }
42
43 void OnCollisionEnter2D(Collision2D collision){
44 if(collision.relativeVelocity.magnitude > damageCounter){
45 hitPoints -= Mathf.RoundToInt(collision.relativeVelocity.magnitude);
46 UpdateScoreStatus (Mathf.RoundToInt (collision.relativeVelocity.magnitude));
47 if(GameController.instance != null && MusicController.instance != null){
48 if(GameController.instance.isMusicOn){
49 if (gameObject != null) {
50 AudioSource.PlayClipAtPoint (hurt, transform.position);
51 }
52 }
53 }
54 }
55
56
57 UpdateAnimationState ();
58
59 if(hitPoints <= 0){
60 Death ();
61
62 if(collision.gameObject.CompareTag("Player Bullet")){
63 bounce = collision.transform.GetComponent<Rigidbody2D> ().velocity;
64 bounce.y = 0f;
65 collision.transform.GetComponent<Rigidbody2D> ().velocity = bounce;
66
67 }
68 }
69 }
70
71 void Death(){
72 Destroy (gameObject);
73 GameObject newDeathEffect = Instantiate (deathEffect, transform.position, Quaternion.identity) as GameObject;
74 Destroy (newDeathEffect, 3f);
75 if(GameController.instance != null){
76 GameController.instance.score += maxScore;
77 }
78 DisplayScore ();
79
80 }
81
82 void UpdateScoreStatus(int hitScore){
83 if(GameController.instance != null){
84 GameController.instance.score += hitScore;
85 }
86 }
87
88 void DisplayScore(){
89 GameObject scoreText = Instantiate (Resources.Load ("Score Text Canvas"), new Vector3(transform.position.x, transform.position.y + 1f), Quaternion.identity) as GameObject;
90 scoreText.transform.GetChild (0).transform.GetComponent<Text> ().text = maxScore.ToString ();
91 Destroy (scoreText, 2f);
92 }
93 }
Use this for initialization
Update is called once per frame